"""
    面向对象编程思想
"""

"""
Python面向对象的编程语言
（1）面向对象的编程思想：
（以前将程序的功能以过程的形式表示）
将功能组织为一个一个具有具体职责的对象，程序由对象之间协助来构成
对象就是现实中的角色，有自己的特征（属性）和行为（方法）
"""

"""
（2）类和对象
（通过类和对象来实现面向对象编程思想）
类：一个模板，对一系列相似现实事物的抽象描述（特征和行为）
对象，具体实例，是类创建的具体的实例，是类的具体表现形式

类：建筑图纸，定义了房子的基本结构
对象：根据图纸盖出来的具体的房子
"""

"""
方法和函数的区别：
函数：定义在模板，使用函数： 函数名()
方法：定义在类，使用方法：对象名.方法名()，方法的第一个参数必须是self
"""

# 定义类：class保留字, class 类名

# 定义一个宠物类：
class Pet:
    # 特征（类的属性，以变量的形式定义）
    # 属性是天生自带有的特征，因此在通过类实例化对象的时候必须具有,因此属性要定义在init方法里
    # __init__： 初始化方法，会在通过类实例化对象的时候自动调用一次
    def __init__(self,input_species,input_name):
        self.species = input_species
        self.name = input_name

    # 行为（类的方法，以函数的形式定义）
    # 方法：宠物叫唤
    # self参数：当前对象本身
    # dog.speak()：Pet.speak(dog)

    def speak(self):
        if self.species == "小狗":
            print("小狗汪汪叫~")
        elif self.species == "小猫":
            print("小猫喵喵叫！")
        elif self.species == "小鸟":
            print("小鸟叽叽喳喳的叫")


# 通过类实例化对象： 对象名 = 类名(属性值)
dog = Pet("小狗","小白")
cat = Pet("小猫","小咪")

# 使用对象的方法：对象名.方法名()
dog.speak()
cat.speak()